查看原文
其他

扩增子统计绘图3热图:样品相关分析,差异OTU

2017-08-23 刘永鑫 宏基因组

点击上方蓝色「宏基因组」关注我们!专业干货每日推送!

写在前面

优秀的作品都有三部分曲,如骇客帝国、教父、指环王等。

扩增子系列课程也分为三部曲:

第一部《扩增子图表解读》:加速大家对同行文章的解读能力。

第二部《扩增子分析解读》:学习数据分析的基本思路和流程。

第三部《扩增子统计绘图》:即是对结果进行可视和统计检验,达到出版级的图表结果。

《扩增子统计绘图》系列文章介绍

《扩增子统计绘图》是之前发布的《扩增子图表解读》和《扩增子分析解读》的进阶篇,是在大家可以看懂文献图表,并能开展标准扩增子分析的基础上,进行结果的统计与可视化。其章节设计与《扩增子图表解读》对应,为八节课八种常用图形(箱线图、散点图、热图、曼哈顿图、火山图、维恩图、三元图和网络图),基本满足文章常用的图片种类需求。

也适合对公司标准化分析返回结果的进一步统计、可视化及美化,达到出版级别,冲击高分文章。

本部分练习所需文件位于百度网盘,链接:http://pan.baidu.com/s/1hs1PXcw 密码:y33d。

1箱线图:Alpha多样性
2散点图:Beta多样性,PCoA, CCA  

热图展示样品相关性

# 运行前,请在Rstudio中菜单栏选择“Session - Set work directory -- Choose directory”,弹窗选择之前分析目录中的result文件夹 # 读入实验设计 design = read.table("design.txt", header=T, row.names= 1, sep="\t") # 读取OTU表 otu_table = read.delim("otu_table.txt", row.names= 1,  header=T, sep="\t") # 过滤数据并排序 idx = rownames(design) %in% colnames(otu_table) sub_design = design[idx,] count = otu_table[, rownames(sub_design)] # 转换原始数据为百分比 norm = t(t(count)/colSums(count,na=T)) * 100 # normalization to total 100 # 计算所有样品间相关系数 sim=cor(norm,method="pearson") # 使用热图可视化,并保存为8x8英寸的PDF library("gplots") library("RColorBrewer") pdf(file=paste("heat_cor_samples.pdf", sep=""), height = 8, width = 8) # 想预览,跳过上面Pdf行直接运行heatmap.2 heatmap.2(sim, Rowv=TRUE, Colv=TRUE, dendrogram='both', trace='none', margins=c(6,6), col=rev(colorRampPalette(brewer.pal(11, "RdYlGn"))(256)),density.info="none") dev.off()

图1. 热图展示所有样品基于相对丰度的Pearson相关系数矩阵。我们可以看到样品明显分成了三类,KO,OE,WT,表明该基因的过表达和基因敲除对菌群均有影响,其中过表达到WT差异明显。其中KO3与WT聚在了一起,表明其野生型相似,我能想到三种可能:过表达的基因被沉默而回复成与野生型相似;该份材料的种子是混入的WT;可能该材料的标WT串成了KO3。

edgeR统计组间差异OTU

# 使用edgeR统计组间差异OTU,以OE vs WT为例 library(edgeR) # create DGE list d = DGEList(counts=count, group=sub_design$genotype) d = calcNormFactors(d) # 生成实验设计矩阵 design.mat = model.matrix(~ 0 + d$samples$group) colnames(design.mat)=levels(genotypes) d2 = estimateGLMCommonDisp(d, design.mat) d2 = estimateGLMTagwiseDisp(d2, design.mat) fit = glmFit(d2, design.mat) # 设置比较组 BvsA <- makeContrasts(contrasts = "OE-WT", levels=design.mat) # 组间比较,统计Fold change, Pvalue lrt = glmLRT(fit,contrast=BvsA) # FDR检验,控制假阳性率小于5% de_lrt = decideTestsDGE(lrt, adjust.method="fdr", p.value=0.05) # 导出计算结果 x=lrt$table x$sig=de_lrt enriched = row.names(subset(x,sig==1)) depleted = row.names(subset(x,sig==-1))

热图展示差异OTU

## 热图展示差异OTU pair_group = subset(sub_design, genotype %in% c("OE", "WT")) # Sig OTU in two genotype DE=c(enriched,depleted) sub_norm = as.matrix(norm[DE, rownames(pair_group)]) #colnames(sub_norm)=gsub("DM","KO",colnames(sub_norm),perl=TRUE) # rename samples ID pdf(file=paste("heat_otu_OEvsWT_sig.pdf", sep=""), height = 8, width = 8) # scale in row, dendrogram only in row, not cluster in column heatmap.2(sub_norm, scale="row", Colv=FALSE, Rowv=FALSE,dendrogram="none", col=rev(colorRampPalette(brewer.pal(11, "RdYlGn"))(256)), cexCol=1,keysize=1,density.info="none",main=NULL,trace="none") dev.off()

图中可到OTU95在OE中高表达,而其它OTU均在OE中下调;表达该基因的表达,主要来拟制一些OTU。这些OTU的编号较大,代表其丰度较高。比如OTU_1,就是聚类结果中最高丰度的OTU。

详细的图片讲解,可参考3热图:差异菌、OTU及功能  

热图的进一步绘制学习材料:热图绘制 (heatmap)  热图美化  热图简化  

想了解更多宏基因组、16S分析相关文章,

快关注“宏基因组”公众号,干货第一时间推送。

系统学习生物信息,快关注“生信宝典”,

那里有几千志同道合的小伙伴一起学习。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存